//
//  MobileAdViewDelegate.h
//  AdAtDaum
//
//  Created by yujeong on 10. 11. 2..
//  Copyright 2010 Daum Communications. All rights reserved.
//

#import <UIKit/UIKit.h>


#define TEST_SIMULATOR @"Simulator"


typedef enum ANIMATIONTYPE {
	ANIMATIONTYPE_CURL,
	ANIMATIONTYPE_FLIP
}ANIMATIONTYPE;

@protocol MobileAdViewDelegate <NSObject>

@required
/**클라이언트 ID반환
 사이트/앱 등록할 때 받은 client id를 등록한다. 정확히 작성하지 않을 경우 해당 사이트에 광고수익이 쌓이지 않게 된다.
 
 @return Daum으로 부터 등록 후 받은 client id를 반환한다.
 */
-(NSString*)clientId;
/** superViewController반환
 
 @return UI구성시 지정된, 광고 view instance를 생성하고 포함하는 상위 view controller를 반환한다.
 */
-(UIViewController*)superViewController;

/** 첫번째 광고 수신중 성공시 호출되는 메소드
 requestAdWithDelegate메소드를 호출하여 처리가 성공했을 때 호출되는 메소드이다. 
 */
-(void)didReceiveAd;


@optional

/** 테스트용 광고요청을 위한 테스트 Device등록
 이 메소드에 의해 전달뙨 기기들 에게는 마켓 실 배포전에 테스트용 광고를 보내주게 된다.
 실배포전에 이 메소드로 전달되는 값이 없도록 반드시 확인해야 한다. 실수로 메소드가 기기 id를 반환하면 광고수입이 발생하지 않는다.
 
 @return 테스트용 광고를 수신할 수 있는 개발용 기기들을 반환한다. 배열로 여러개를 반환할 수 있다.
 */
-(NSArray*)testDevice;

/** 광고의 배경색 지정
 서버는 광고에 대한 배경색상과 배경이미지를 포함하고 있다. 하지만 어플리케이션이 지정한 배경색상이 있다면 서버의 값은 무시되고 어플리케이션의 배경색이 지정된다.
 
 @return 어플리케이션에서 지정한 글자 배경색이 있다면 반환한다.
 */
-(UIColor*)MobileAdViewBackgroundColor;

/** 광고의 글자색 지정
 서버는 텍스트형 광고에 대해 글자색을 지정하고 있다. 그러나 어플리케이션과 어울리는 지정된 글자색이 있어서 그 값을 반환하면 서버로부터 받은 값이 무시되고 지정된 색상으로 표시된다.
 
 @return 어플리케이션에서 정한 글자색이 있다면 그 값을 반환한다.
 */
-(UIColor*)MobileAdViewTextColor;

/** 광고 view의 변경시 효과 지정
 
 @return 광고를 새롭게 갱신하는 경우 앞서 보였던 광고로 부터 새 광고로의 노출시 효과를 지정할 수 있다. 
 [ANIMATIONTYPE_CURL, ANIMATIONTYPE_FLIP]
 */
-(ANIMATIONTYPE)animationType;


/** 갱신하려는 광고 수신 중 성공 시 호출 되는 메소드
 requestRefreshAd메소드를 호출하여 광고 갱신을 요청하거나 타이머에 의해서 광고 갱신을 요청시 처리가 성공했을 때 호출되는 메소드이다.
 이미 광고 view가 성공적으로 노출이 된 상태에서는 이 메소드에서 크게 구현할 것은 없다.
 */
-(void)didReceiveRefreshAd;

/** 첫번째 광고 수신 중 실패시 호출되는 메소드
 requestAdWithDelegate메소드를 호출하여 처리가 실패되었을때 호출되는 메소드
 이 메소드에서 광고 view 수신 실패시 가리거나 다른 처리를 할 수 있다. 
 @param in_error 에러메시지가 전달된다.
 */

-(void)didFailedReceiveAdWithError:(NSError*)in_error;

/** 갱신하려는 광고 수신 중 실패시 호출되는 메소드
 이 메소드에서 광고 view 수신 실패시 가리거나 다른 처리를 할 수 있다. 
 @param in_error 에러메시지가 전달된다.
 */
-(void)didFailedReceiveRefreshAdWithError:(NSError*)in_error;

/** 광고를 전체화면에 보여줄 때 호출되는 메소드
 광고를 클릭해서 웹뷰로 전체 화면에 해당 광고가 나타날때 호출된다.
 UI적으로 처리가 필요한 것들이 있다면 여기서 수행할 수 있다.
 */
-(void)willShowADInFullScreen;

/** 전체화면 광고가 닫힐때 호출하는 메소드
 전체화면에 표시된 광고를 닫을 때 전달되는 메소드이다.
 UI적으로 처리가 필요한 것들이 있다면 여기서 수행할 수 있다. 
 */
-(void)closedFullScreenAD;

/**
 광고를 보기위해 어플리케이션이 닫혀질때 호출하는 메소드
 광고 보기위해 어플리케이션이 닫혀지거나 foreground에서 내려갈 때 호출되는 메소드이다.
 */
-(void)willResideAd;

@end
